package com.shs.stack;

import java.text.DecimalFormat;
import java.util.List;
import java.util.Scanner;

import static com.shs.stack.Operation.*;

/**
 * @Author 晚点再动心
 * @Date 2022/9/16
 */
public class Calculators {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean temp = true;
        while (temp){
            System.out.println("+---------------+");
            System.out.println("|    计算器      |");
            System.out.println("|   1.清零       |");
            System.out.println("|   2.混合运算    |");
            System.out.println("|   3.退出       |");
            System.out.println("+------------+");
            System.out.print("请输入选项：");

            //输入选项
            int choice = scanner.nextInt();
            switch (choice) {
                case 1:
                    System.out.println("===清零====");
                    break;
                case 2:
                    System.out.println("====混合运算===");
                    System.out.println("请输入需要计算的表达式：");
                    String jisuan = scanner.next();
                    // 做处理：剔除空格，将中文的括号统一替换成英文的
                    jisuan = replaceStr(jisuan);

                    // 计算公式字符串处理成集合
                    List<String> arry = stringToList(jisuan);

                    // 中缀表达式处理为后缀表达式
                    List<String> end = CenToEnd(arry);

                    // 计算结果
                    String result = Opera(end);
                    System.out.println(result);


                    // 写#的是有值就写值，没值就不写	DecimalFormat df=new DecimalFormat("#.000");
                    // 写0的是有值就写值，没值就写0	DecimalFormat df=new DecimalFormat("0.000");
                    double d = Double.parseDouble(result);
                    DecimalFormat df=new DecimalFormat("0.00");
                    String d2 = df.format(d);
                    System.out.println(d2);

                    break;
                case 3:
                    System.out.println("====退出=====");
                    temp = false;
                    break;

                default:
                    System.out.println("输入有误");
            }
        }
    }

}
